package com.haipumi.servlets;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.haipumi.beans.JsonModel;
/**
 * 这个类是个抽象类,用于增强servlet的功能,这个类中加入所有的servlet的功能
 * 1.输出json数据的功能
 * @author Administrator
 *	设计模式:适配器
 */
public class CommonServlet extends HttpServlet {
	protected int rows=10;
	protected int page=1;
	protected String sort;
	protected String order="asc";
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		if(req.getParameter("rows")!=null){
			rows=Integer.parseInt(req.getParameter("rows" ) );
		}
		if(req.getParameter("page")!=null){
			page=Integer.parseInt(req.getParameter("page" ) );
		}
		if(req.getParameter("sort")!=null){
			sort=req.getParameter("sort" ) ;
		}
		if(req.getParameter("order")!=null){
			order=req.getParameter("order" ) ;
		}
		super.service(req, resp);//这句话不能删除,因为servlet必须通过父类的service 判断是doGet 还是 doPost
	}
	
	/**
	 * 传到界面上的值，以jsonmodel的格式，code为1代表成功  code为0    表示失败        msg  是失败的时候传过去的消息       obj 是成功时候传过去的对象
	 * @param response
	 * @param jm
	 */
	public void outData(HttpServletResponse response,JsonModel jm){
		response.setContentType("text/plain;charset=utf-8");
		PrintWriter out=null;
		try {
			out=response.getWriter();
			//将jsonmodel的对象转换成json格式
			//对象 ： {键 :值,键:值};
			//数组 ：{code:1,msg:null,obj:[{id:1,name:yhj}]}
			Gson gson=new Gson();
			String returnvalue=gson.toJson(jm);
			//其他json框架
			out.println(returnvalue);
			out.flush();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			out.close();
		}
	}
	/**
	 * 重写的outData的方法，传过去的是obj对象，用于表格更新数据
	 * @param response
	 * @param jm
	 */
	public void outData(HttpServletResponse response,Object jm){
		response.setContentType("text/plain;charset=utf-8");
		PrintWriter out=null;
		try {
			out=response.getWriter();
			//将jsonmodel的对象转换成json格式
			//对象 ： {键 :值,键:值};
			//数组 ：{code:1,msg:null,obj:[{id:1,name:yhj}]}
			Gson gson=new Gson();
			String returnvalue=gson.toJson(jm);
			//其他json框架
			out.println(returnvalue);
			out.flush();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			out.close();
		}
	}
	
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        doGet(req, resp);  
    }  
}
